package write.basic;

public class OperatorDemo {
    public static void main(String[] args) {
        //算术：+，-，*，/，%，++，--
        int a=5,b=7;
        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/b);
        System.out.println(a%b);

        //++/--:自增1/自减1，可在变量前也可在变量后
        //单独使用时，在前在后都一样
        //被使用时，在前在后不一样
        a = 5;
        System.out.println(a++);
        a = 5;
        System.out.println(++a);
        a = 5;
        System.out.println(a--);
        a = 5;
        System.out.println(--a);


        //关系：>、<、>=、<=、==、!=
        //运算结果都是boolean
        System.out.println(a==b);
        System.out.println(a!=b);
        System.out.println(a>b);
        System.out.println(a<=b);


        //逻辑：&&、||、!
        //逻辑运算两边跟的需要是boolean结果的数据
        //优先级 !>&&>||
        System.out.println(true && !true);
        //&&的优先级是要高于｜｜的。意思是如果一个表达式里面同时有这两个，
        // 执行并不是从左往右的顺序，而是按先&&后｜｜的顺序
        //左-右 false
        //先&& true
        boolean flag =true || true && false;
        System.out.println(flag);

        //短路特性
        //&&,第一个为false，&&后面的内容不执行，影响主要体现在在后面的内容是否涉及运算，赋值等相关
        //||,第一个为true,||后面的内容不执行，......
        int c = 6;
        int d = 8;
        System.out.println(c>0 && (d+=2) > 5);
        System.out.println(d);

        c = 6;
        d = 8;
        System.out.println(c>0 || d-->5);
        System.out.println(d);

        //!：逻辑非(取反)


        //赋值：=、+=、-=、*=、/=、%=
        //简单赋值运算符：=
        //扩展赋值运算符：+=,-=,*=,/=,%=
        //扩展赋值运算符自带强转功能
        byte q = 5;
        q += 3;
        q = (byte)(q+3);
        System.out.println(q);
        short w = 6;
        w += 2;
        w = (short)(w+2);
        System.out.println(w);
        float e = 3.33f;
        e += 3.33;
        e = (float)(e+3.33);
        System.out.println(e);
        int r = 6;
        r += 5;
        r = r+5;
        System.out.println(r);
        double t = 2.22;
        t += 2.22;
        t = t+2.22;
        System.out.println(t);

        //字符串连接：+
        System.out.println(10+20+"abc"+30);
        System.out.println("abc"+10+20+30);

        //条件：boolean？数1：数2
        //只要数1、数2出现过大类型的数据，得出的数就会自动转
        int a1 = 5;
        int b1 = 6;
        System.out.println(a1>3?(b1<10?9:99.0):9);


    }
}
